#include <ros/ros.h>
#include <Ros/person.h>

void doPerson(const Ros::person::ConstPtr &msg); //声明回调函数

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    ros::init(argc,argv,"listener");
    ROS_INFO("订阅者消息");
    ros::NodeHandle nh;
    /**
     * 实例化 订阅者 对象
     * 泛型(模板)[订阅者这里可有可无，会通过话题接收到发布者的消息进行推断]:自定义的person.msg
     * 参数1:订阅的话题，要与发布者节点的发出的话题一致
     * 参数2:队列中最大保存的消息数
     * 参数3:回调函数，在其中处理订阅到的消息
     */
    ros::Subscriber sub = nh.subscribe<Ros::person>("person_s_information",10, doPerson);
    ros::spin();
    return 0;
}

void doPerson(const Ros::person::ConstPtr &msg) 
{
    /* 调用回调函数时的输出日志 */
    ROS_INFO("订阅者接收到的消息：姓名：%s , 身高：%1f cm，标准体重：%2f kg", msg->name.c_str(), msg->height, msg->weight);
}